home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / edit / ae_14.zip / AE.PAS < prev    next >
Pascal/Delphi Source File  |  1991-03-21  |  45KB  |  1,060 lines

  1. program AE ;
  2.  
  3. {$M 16384, 90000, 220000}
  4. { memory requirements: stack size, min heap size, max heap size }
  5.  
  6. {$B-}  { short-circuit boolean evaluation }
  7. {$I-}  { do not generate run-time errors for I/O operations }
  8. {$S+}  { stack checking on }
  9. {$V-}  { relaxed var string checking }
  10.  
  11. uses Crt,Dos,Printer,AE0,AE1,AE2,AE3,AE4 ;
  12.  
  13. const Version = '1.4' ;
  14.       Date    = '21 Mar 1991' ;
  15.  
  16. {-----------------------------------------------------------------------------}
  17. {                                                                             }
  18. { AE -- ANOTHER EDITOR                                                        }
  19. { WRITTEN IN TURBO PASCAL 5.5                                                 }
  20. {                                                                             }
  21. {-----------------------------------------------------------------------------}
  22. { KEY DEFINITIONS                                                             }
  23. {                                                                             }
  24. {           NORMAL                      SHIFT                                 }
  25. {           --------------------------  ------------------------------        }
  26. { F1        HELP                        SETUP                                 }
  27. { F2        SAVE FILE                   WRITE TO FILE                         }
  28. { F3        LOAD FILE                   INSERT FILE                           }
  29. { F4        FIND                        FIND & REPLACE                        }
  30. { F5        PUT MARK                    ERASE MARK                            }
  31. { F6        CUT BLOCK TO PASTE BUFFER   DELETE BLOCK                          }
  32. { F7        COPY BLOCK TO PASTE BUFFER  COMPARE BLOCK TO PASTE BUFFER         }
  33. { F8        PASTE BLOCK                 PRINT BLOCK                           }
  34. { F9        NEXT WINDOW                 PREVIOUS WINDOW                       }
  35. { F10       DOS COMMAND                                                       }
  36. {                                                                             }
  37. { alt 0-9   PLAY MACRO                                                        }
  38. {     A     SWITCH TO WINDOW A                                                }
  39. {     B                                                                       }
  40. {     C     CENTER LINE                                                       }
  41. {     D     DEFINE KEYBOARD MACRO                                             }
  42. {     E     EJECT PRINTER PAGE                                                }
  43. {     F     FORMAT PARAGRAPH                                                  }
  44. {     G     GET SAVED POSITION                                                }
  45. {     H                                                                       }
  46. {     I     IBM CHARACTER SET (ASCII TABLE)                                   }
  47. {     J     JUSTIFY LINE TO RIGHT                                             }
  48. {     K                                                                       }
  49. {     L     DELETE LINE                                                       }
  50. {     M     MATCH BRACKETS                                                    }
  51. {     N     NEW (CLEAR FILE BUFFER)                                           }
  52. {     O                                                                       }
  53. {     P     PRINT ENTIRE FILE BUFFER                                          }
  54. {     R     REPEAT LAST FIND/REPLACE                                          }
  55. {     S     SAVE POSITION                                                     }
  56. {     T     TOGGLE CASE IN BLOCK                                              }
  57. {     V                                                                       }
  58. {     W     DELETE WORD FORWARD                                               }
  59. {     X     EXIT PROGRAM                                                      }
  60. {     Y                                                                       }
  61. {     Z     DISPLAY VERSION NUMBER AND DATE                                   }
  62. {                                                                             }
  63. { FIND/REPLACE OPTIONS: I = IGNORE CASE                                       }
  64. {                       N = NO QUERY                                          }
  65. {                       R = REVERSE SEARCH                                    }
  66. {                                                                             }
  67. { SETUP : E = ENVIRONMENT                                                     }
  68. {                K = KEYCLICK (ON/OFF)                                        }
  69. {                B = BELL (ON/OFF)                                            }
  70. {                W = WORD WRAP LENGTH (0 = OFF)                               }
  71. {                T = TAB SPACING                                              }
  72. {                A = AUTO-INDENT (ON/OFF)                                     }
  73. {                I = INSERT/OVERWRITE                                         }
  74. {         F = FILE                                                            }
  75. {                E = SAVE FILES ON EXIT (ON/OFF)                              }
  76. {                I = INTERVAL FOR AUTO-SAVE (0 = OFF)                         }
  77. {                B = MAKE .BAK FILE (ON/OFF)                                  }
  78. {         P = PRINTER                                                         }
  79. {                P = PAGE LENGTH (0 = OFF)                                    }
  80. {                L = LEFT MARGIN                                              }
  81. {                T = TOP MARGIN                                               }
  82. {                N = PRINT PAGE NUMBERS (ON/OFF)                              }
  83. {         D = DISPLAY                                                         }
  84. {                T = CHANGE CURSOR TYPE                                       }
  85. {                C = CHANGE SCREEN COLORS                                     }
  86. {                D = DISPLAY SPACES AS DOTS (ON/OFF)                          }
  87. {         S = SAVE SETTINGS                                                   }
  88. {                                                                             }
  89. {-----------------------------------------------------------------------------}
  90.  
  91.  
  92. {-----------------------------------------------------------------------------}
  93. { Initializes all necessary variables, and loads the file specified on the    }
  94. { command line into the first workspace.                                      }
  95. {-----------------------------------------------------------------------------}
  96.  
  97. procedure Initialize ;
  98.  
  99. var Reg : registers ;
  100.     Counter : word ;
  101.     ConfigFile : file of ConfigBlock ;
  102.     ConfigFilePath : PathStr ;
  103.     AEDir : DirStr ;
  104.     AEName : NameStr ;
  105.     AEExt : ExtStr ;
  106.  
  107. begin
  108. { check the presence of a color video adapter }
  109. Reg.AH := 15 ;
  110. Intr ($10,Reg) ;
  111. ColorCard := Reg.AL <> Mono ;
  112. { set start address of screen memory }
  113. if ColorCard
  114.    then DisplayPtr := Ptr($B800,0)
  115.    else DisplayPtr := Ptr($B000,0);
  116. { store screen settings }
  117. OrigCursorType := GetCursor ;
  118. OrigTextAttr := TextAttr ;
  119. { try to find setup file }
  120. ConfigFilePath := '' ;
  121. if Exists(ConfigFileName)
  122.    then ConfigFilePath := FExpand (ConfigFileName)
  123.    else begin
  124.         if Lo(DosVersion) >= 3
  125.            then begin
  126.                 { look for setup file in directory where AE.EXE is }
  127.                 FSplit (ParamStr(0),AEDir,AEName,AEExt) ;
  128.                 if Exists (AEDir+ConfigFileName)
  129.                    then ConfigFilePath := AEDir + ConfigFileName ;
  130.                 end
  131.         end ;
  132. if Length(ConfigFilePath) > 0
  133.    then begin
  134.         { load setup }
  135.         Assign (ConfigFile,ConfigFilePath) ;
  136.         Reset (ConfigFile) ;
  137.         Read (ConfigFile,Config) ;
  138.         Close (ConfigFile)
  139.         end
  140.    else begin
  141.         { no setup file: use default }
  142.         Config.Setup := DefaultSetup ;
  143.         for Counter := 1 to NrOfMacros do
  144.             Config.Macro.Length[Counter] := Inactive ;
  145.         end ;
  146. { set s